home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD-ROM Now 11
/
CD-ROM Now MegaDisc 11 (1995-02).iso
/
utils
/
ask.doc
< prev
next >
Wrap
Text File
|
1994-10-26
|
8KB
|
234 lines
ASK, v1.1
-------------
from TifaWARE
What's New
----------
With version 1.1 I have substantially reorganized ASK's source code,
placing commonly-used routines in libraries and useful equates and macros
in separate files. From the user's point of view, however, there should be
no change in the program except that ASK no longer allows a space between
'-t' and the time-out value. Sharing code, equates and macros in this way
will make it easier for me to both develop and maintain other assembly
language programs.
Version 1.0 was the first public release of ASK.
Introduction
------------
ASK is a simple utility for batch programming. With it you can
execute statements conditionally based on the user's responses to your
questions. And its ability to time-out with no response makes ASK perfect
for "hands-off" batch utilities.
Usage
-----
Running this program is a breeze. Assuming you've placed ASK.COM
where DOS can find it, type "ASK -?" to display a brief help message
similar to the following:
TifaWARE ASK, v1.1a, 08/28/90 - ask questions in batch files.
Usage: ask [-options] [msgtxt]
Options:
-l = convert response to lower case
-tn = wait n seconds before timing out
-u = convert response to upper case
-? = display this help message
msgtxt is an optional message to display.
[If you don't remember anything else from reading the documentation, at
least remember how to display this help message.]
Generally you invoke ASK with some message text. ASK displays the
text and then waits for the user to type a single character. Once a key is
detected, ASK exits with a return code equal to the ASCII character code;
eg, 'Y' = 89, 'N' = 78, '<ENTER>' = 13, '1' = 49, etc... It's then up to
you to check for specific values via the DOS ERRORLEVEL construct in a
batch file.
The actual value returned can be altered using the '-l' ('-u') option
which converts the character to lowercase (uppercase) before ASK exits.
You can instruct ASK to time-out rather than wait indefitely for
input. Simply specify the number of seconds to wait using the '-t' option.
If no input is detected before the time-out is reached, ASK exits with a
return code of 0. Note that with this feature ASK improves on the DOS
PAUSE command. That is, "ASK -t60 Strike a key when ready . . ."
duplicates PAUSE's functionality but waits for input only for a minute!
All of this may be somewhat confusing so I'll close this section with
an example. Let's say you sometimes, but not always, want to boot your
machine with various memory-resident programs (aka TSRs). You can do this
easily by adding the following code to your AUTOEXEC.BAT file:
rem Check whether to load TSRs
Ask -t60 -u Load memory-resident programs (Y/n)?
if ERRORLEVEL 78 if not ERRORLEVEL 79 goto NoTSRs
rem Load 'em
Print /d:PRN
Graphics
:NoTSRs
rem Set environment variables
PATH=C:\BIN;C:\USR\BIN
prompt $p$g
Note how ASK is invoked here. ASK displays the text "Load memory-resident
programs (Y/n)? " and waits for up to a minute (60 seconds) for the user
to type a key, which will be converted to uppercase before ASK exits. The
next line is a neat way to test if ERRORLEVEL equals 78, the ASCII
character code for 'N'. Thus, if the user types either an 'N' or 'n' in
response to ASK, execution passes to the label "NoTSRs" and TSRs won't be
loaded. Anything else causes execution to fall through to the next
statement and thereby load TSRs.
If You Have Any Trouble
-----------------------
ASK will attempt to let you know of any problems that arise. Here are
the possible error messages and how you should deal with each:
ask: illegal option -- x.
- Type "ASK -?" for a list of valid options.
ask: time-out value not specified.
- When you use the '-t' option you must supply
a time-out value. This number represents the
number of seconds to wait for character input
before aborting ASK.
ask: time-out value too large -- 123456789.
- The time-out value must be between 0 and
43199 seconds (12 hours = 43200 seconds).
These messages are written to the standard error device. In this way, they
won't disappear down a pipe or into a file when redirecting ASK's output.
Additionally, ASK uses a return code to convey information about the
success or failure of its operation. Possible return values are:
Code Meaning
---- -------
0 Time-out value reached without user input
1 - 254 ASCII code for character processed
255 Help message was displayed or time-out was too large
You can test for these codes using the ERRORLEVEL variable in a batch file.
Refer to your DOS manual for a table of keys and their ASCII character
codes.
Limitations
-----------
To remain portable across all computers running MS-DOS, ASK does not
handle extended scan codes. What this means is that ASK distinguishes only
"typewritter keys"; ie, alphanumeric and punctuation keys. Function keys
or keypad keys lead to unpredictable results.
Keys such as <SHIFT>, <CTRL>, or <ALT> do *not* count as keystrokes
by themselves. They must be used in combination with others.
When a time-out value is specified, ASK adds the value to the current
time and then continually compares the result to the current time until
the two values match. Of necessity, then, the amount of time ASK waits for
user input will be accurate only as long as the system clock does not
change in some abnormal fashion. This might occur if ASK is run in one
DESQview window and the time is changed in another, or if the system clock
loses track of time around midnight while ASK is waiting for input. It's
debatable whether this is appropriate behaviour for ASK.
Requirements
------------
TifaWARE ASK runs on machines operating under MS-DOS v2.xx or later,
and requires less than 2K of memory. It does not use BIOS calls, make
direct writes to video RAM, or otherwise require machines to be
"PC-compatible". In fact, it will even run properly on a DEC Rainbow!
Who Owns It?
------------
I am releasing this implementation of ASK into the public domain.
Since my involvement with MS-DOS began in 1984, I've been a heavy user of
public domain software. Public domain software is a terrific idea. For
the most part, programs are useful and the source code instructive, all at
no cost! With this small contribution to the public domain I hope to pay
back, in some sense, my gratitude to those other programmers who have made
my computing so much easier.
As a public domain program, ASK carries no obligation on my part to
support users or provide future upgrades. I have tried to write clean code
and believe it to be "bug-free". Nevertheless, you must use this program
***AT YOUR OWN RISK***. I strongly urge you to scan the source code
yourself, make any desired changes, and recompile the program, if this is
possible. If you make this standard practice with newly acquired public
domain software, you'll not only protect your system from worms and viruses
but also get a better feel for exactly how each program works!
As author of ASK, I ask of you two things: First, if you distribute
this program, please keep together my original source code, documentation,
and executable. This just makes it easier for others to use the software.
Second, let me hear what you think of ASK - your comments on a postcard
would be appreciated. Enjoy!
Kudos
-----
Many thanks to Borland for its stand-alone debugger, which greatly
reduced the time spent developing this program.
George A. Theall
TifaWARE
506 South 41st St., #3M
Philadelphia, PA. 19104
U.S.A.
+1 215 662 0558
GTHEALL@PENNDRLS.UPENN.EDU (Internet)